home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet internetowy / Przegladarki internetowe / Maxthon 1.5.8 b 120 / mcombo.exe / Plugin / Techorati Sidebar / scripts / Technorati.js.bak < prev   
Text File  |  2006-09-08  |  11KB  |  395 lines

  1. /**************************
  2.     Technorati Sidebar
  3.     By Neo101
  4.     Version 1.0.0
  5. **************************/
  6.  
  7. checkSettingsFile()
  8.  
  9. var itemsOnPage = parseInt( readSetting('itemsOnPage', '10') )
  10.  
  11. var showLoadingMessage = readSetting('showLoadingMessage', '1')
  12.  
  13. var searchResults = new Array()
  14.  
  15. var element
  16. var start
  17. var xmlhttp
  18.  
  19. var API_KEY = '1136bb50c3675d2d72265e0022ef355d'
  20. var feedLimit = readSetting('feedLimit', '20')
  21.  
  22. var timer
  23. var intervalTime = readSetting('intervalTime', '15') // in minutes
  24. var enableInterval = readSetting('enableInterval', '0')
  25.  
  26. var authority = readSetting('authority', 'a1')
  27. var language = readSetting('language', 'en')
  28.  
  29. window.onload = function(){
  30.     setAutoUpdateText()
  31.     
  32.     document.getElementById('keywords').select()
  33.     
  34.     setSelectBox('authority')
  35.     setSelectBox('language')
  36. }
  37.  
  38.  
  39. function search(noClear){
  40.     var keywords = encodeURIComponent( document.getElementById('keywords').value )
  41.     if(keywords == ''){
  42.         document.getElementById('searchResults').innerHTML = 'Please enter a keyword!'
  43.         document.getElementById('searchResultsNextPreviousHead').innerHTML = ''
  44.         document.getElementById('searchResultsNextPreviousBottom').innerHTML = ''
  45.         return
  46.     }
  47.     var format = 'RSS'
  48.     
  49.     var language = document.getElementById('language').value
  50.     var authority = document.getElementById('authority').value
  51.     
  52.     var url = 'http://api.technorati.com/search?key=' + API_KEY + '&format=' + format + '&limit=' + feedLimit + 
  53.                     '&authority=' + authority + '&language=' + language + '&query=' + keywords
  54.     element = 'searchResults'
  55.     start = 0
  56.     
  57.     if(noClear == null){
  58.         document.getElementById('searchResults').innerHTML = 'Loading....<br>This could take a while...'
  59.         document.getElementById('searchResultsNextPreviousHead').innerHTML = ''
  60.         document.getElementById('searchResultsNextPreviousBottom').innerHTML = ''
  61.         
  62.         if(enableInterval == '1'){
  63.             if(timer){
  64.                 window.clearInterval(timer)
  65.             }
  66.             timer = window.setInterval('search(true)', intervalTime * 1000 * 60)
  67.         }
  68.     }
  69.     
  70.     loadXMLDoc(url, onResponseView)
  71. }
  72.  
  73.  
  74. function blogInfoSearch(){
  75.     var url = encodeURIComponent( document.getElementById('url').value )
  76.     if(url == ''){
  77.         document.getElementById('blogInfo').innerHTML = 'Please enter a keyword!'
  78.         return
  79.     }
  80.     if(url.search(/\./) == -1){
  81.         showError('Please enter a valid domain or URL')
  82.         return
  83.     }
  84.     
  85.     var format = 'RSS'
  86.     
  87.     var url = 'http://api.technorati.com/bloginfo?key=' + API_KEY + '&format=' + format + '&url=' + url
  88.     element = 'blogInfo'
  89.     start = 0
  90.     document.getElementById('blogInfo').innerHTML = 'Loading....<br>This could take a while...'
  91.  
  92.     loadXMLDoc(url, onResponseBlogInfo)
  93. }
  94.  
  95.  
  96. function loadXMLDoc(url, stateChange){
  97.     xmlhttp = new ActiveXObject("Microsoft.XMLHTTP")
  98.     xmlhttp.onreadystatechange = stateChange;
  99.     xmlhttp.open("GET", url, true);
  100.     xmlhttp.setRequestHeader("User-Agent","Maxthon Technorati Sidebar 1.0")
  101.     xmlhttp.send(null)
  102. }
  103.  
  104.  
  105. function checkReadyState(obj){
  106.     if(obj.readyState == 4){
  107.         if(obj.status == 200 || obj.status == 201){
  108.             return true
  109.         }
  110.         if(obj.status == 0){
  111.             if(element == 'blogInfo'){
  112.                 blogInfoSearch()
  113.             } else {
  114.                 search()
  115.             }
  116.             return false
  117.         }
  118.         else{
  119.             showError(obj.status + ' ' + obj.responseText)
  120.         }
  121.     }
  122.     return false
  123. }
  124.  
  125.  
  126. function onResponseView(){
  127.     if( ! checkReadyState(xmlhttp) ){
  128.         return
  129.     }
  130.  
  131.     var responseXML = xmlhttp.responseXML
  132.     
  133.     if(responseXML == null){
  134.         showError('Error 212: Could not parse feed <br>Make sure Technorati is working')
  135.         return
  136.     }
  137.     
  138.     var response = ''
  139.     
  140.     var rssFeeds = new Array()
  141.     
  142.     items = responseXML.getElementsByTagName("item")
  143.  
  144.     if(items && items.length != 0 ){
  145.         for(var j=0; j < items.length; j++) {
  146.             addFeedItem(items[j], rssFeeds)
  147.         }
  148.     }
  149.     else{
  150.         response += '<b>Nothing found</b>'
  151.     }
  152.     
  153.     
  154.     response += writeFeedHtml( rssFeeds )
  155.     
  156.     if(rssFeeds.length == 0){
  157.         response += '<b>Nothing found</b>'
  158.     }
  159.     
  160.     document.getElementById(element).innerHTML = response
  161.     
  162.     eval( element + ' = rssFeeds ')
  163.     
  164.     if(rssFeeds.length > 0){
  165.         createNextPreviousLinks()
  166.     }
  167. }
  168.  
  169.  
  170. function onResponseBlogInfo(){
  171.     if( ! checkReadyState(xmlhttp) ){
  172.         return
  173.     }
  174.  
  175.     var responseXML = xmlhttp.responseXML
  176.     
  177.     if(responseXML == null){
  178.         showError('Error 212: Could not parse feed <br>Make sure Technorati is working')
  179.         return
  180.     }
  181.     
  182.     var title = responseXML.getElementsByTagName("title")[2].text
  183.     
  184.     if(title == ''){
  185.         var response = 'No information found about this URL'
  186.         response += '<br><a href="#" onclick="currentSiteDomainOnly()">Try domain name only</a>'
  187.     } else {
  188.     
  189.         var response = 'Result for ' + title
  190.         
  191.         var inboundblogs = responseXML.getElementsByTagName("tapi:inboundblogs")[0].text
  192.         var inboundlinks = responseXML.getElementsByTagName("tapi:inboundlinks")[0].text
  193.         var rank = responseXML.getElementsByTagName("tapi:rank")[0].text
  194.         if(responseXML.getElementsByTagName("comments")[0]){
  195.             var link = responseXML.getElementsByTagName("comments")[0].text
  196.         }
  197.         if(responseXML.getElementsByTagName("tapi:rssurl")[0]){
  198.             var rssurl = responseXML.getElementsByTagName("tapi:rssurl")[0].text
  199.         }
  200.         if(responseXML.getElementsByTagName("tapi:atomurl")[0]){
  201.             var atomurl = responseXML.getElementsByTagName("tapi:atomurl")[0].text
  202.         }
  203.         
  204.         if(responseXML.getElementsByTagName("tapi:firstname")[0]){
  205.             var firstname = responseXML.getElementsByTagName("tapi:firstname")[0].text
  206.         }
  207.         if(responseXML.getElementsByTagName("tapi:lastname")[0]){
  208.             var lastname = responseXML.getElementsByTagName("tapi:lastname")[0].text
  209.         }
  210.         if(responseXML.getElementsByTagName("tapi:thumbnailpicture")[0]){
  211.             var pictureURL = responseXML.getElementsByTagName("tapi:thumbnailpicture")[0].text
  212.         }
  213.         if(responseXML.getElementsByTagName("guid")[0]){
  214.             var profileURL = responseXML.getElementsByTagName("guid")[0].text
  215.         }
  216.         
  217.         response += '<br><b>Blogs linking here:</b> ' + inboundblogs
  218.         response += '<br><b>Links here:</b> ' + inboundlinks
  219.         response += '<br><b>Blog Rank:</b> ' + rank
  220.         if(firstname && lastname){
  221.             response += '<br><b>Owned by:</b> ' + firstname + ' ' + lastname
  222.         }
  223.         if(profileURL){
  224.             response += '<br><a href="' + profileURL + '" target=_blank>Profile</a>'
  225.         }
  226.         if(pictureURL){
  227.             response += '<br><img src="' + pictureURL + '">'
  228.         }
  229.         if(link){
  230.             response += '<br><a href="' + link + '" target=_blank>More info</a>'
  231.         }
  232.         if(rssurl){
  233.             response += '<br><a href="' + rssurl + '" target=_blank>RSS url</a>'
  234.         }
  235.         if(atomurl){
  236.             response += '<br><a href="' + atomurl + '" target=_blank>ATOM url</a>'
  237.         }
  238.     }
  239.     
  240.     document.getElementById(element).innerHTML = response
  241. }
  242.  
  243.  
  244. function writeFeedHtml( array){
  245.     var response = '<ul>'
  246.     
  247.     for(var i=0; i<array.length && i<itemsOnPage; i++){
  248.         var item = array[i]
  249.         response += '<li>'+
  250.                         //'<a href="' + item.link + '" target=_blank class=title title="' + item.tooltip + '" '+
  251.                         //    'onmouseover="showLink(\'' + item.link + '\')" onmouseout="hideLink()">' + item.title + '</a>' +
  252.                         '<h3>' + 
  253.                             '<span onclick="expandCollapse(this.parentElement.nextSibling.id)" class=expandCollapse>' +
  254.                                 item.title + 
  255.                             '</span>' +
  256.                             ' <a href="' + item.link + '" target=_blank title="' + item.link + '">»</a></h3>' +
  257.                         '<div style="display:none" id="item' + i + '">' + item.tooltip + '</div>'
  258.                     '<\/li>'
  259.     }
  260.     response += '<\/ul>'
  261.     
  262.     return response
  263. }
  264.  
  265.  
  266. function addFeedItem( item , array){
  267.     var title = ''
  268.     var link = ''
  269.     var description = ''
  270.     var pubDate = ''
  271.     var inboundblogs = ''
  272.     var inboundlinks = ''
  273.     //var linkcreated = ''
  274.     
  275.     var nodes = item.childNodes
  276.     
  277.     for(var i=0; i < nodes.length; i++){
  278.         var tagName = nodes(i).tagName
  279.         var tagText = nodes(i).text
  280.         if(tagName=='title'){
  281.             title = replacer(tagText)
  282.         }
  283.         else if(tagName=='link'){
  284.             link = tagText
  285.         }
  286.         else if(tagName=='description'){
  287.             description = replacer(tagText)
  288.         }
  289.         else if(tagName=='tapi:inboundblogs'){
  290.             inboundblogs = replacer(tagText)
  291.         }
  292.         else if(tagName=='tapi:inboundlinks'){
  293.             inboundlinks = replacer(tagText)
  294.         }
  295.         /* else if(tagName=='tapi:linkcreated'){
  296.             linkcreated = replacer(tagText)
  297.         } */
  298.         else if(tagName=='pubDate'){
  299.             pubDate = replacer(tagText)
  300.         }
  301.     }
  302.     
  303.     var displayedLink = link.replace('http://', '').replace(/\/.*/,'')
  304.     
  305.     var tooltip = '<b>Link:</b> <a href="' + link + '" target=_blank title="' + link + '">' + displayedLink + '</a>'
  306.     tooltip += '<br><b>Description:</b> ' + description
  307.     tooltip += '<br><b>Date:</b> ' + pubDate
  308.     //tooltip += '<br><b>Created:</b> ' + linkcreated
  309.     tooltip += '<br><b>Links:</b> ' + inboundlinks
  310.     tooltip += '<br><b>Blogs:</b> ' + inboundblogs
  311.     
  312.     
  313.     if(title != '' && link != ''){
  314.         array.push( {'title':title,
  315.                     'link':link,
  316.                     'description':description,
  317.                     'tooltip':tooltip,
  318.                     'pubDate':pubDate
  319.                     } )
  320.     }
  321. }
  322.  
  323.  
  324. function createNextPreviousLinks(){
  325.     var next = start + itemsOnPage
  326.     var previous = start - itemsOnPage
  327.     
  328.     var nextPreviousHTML = ''
  329.     
  330.     if( previous >= 0 ){
  331.         nextPreviousHTML += '<a href="javascript:showFeedPart(\'' + element + '\', ' + previous + ')" class=prevNext>« Previous</a>'
  332.     }
  333.     if( previous >= 0 && next < feedLimit ){
  334.         nextPreviousHTML += '<span style="width:30px"></span>'
  335.     }
  336.     if( next < feedLimit ){
  337.         nextPreviousHTML += '<a href="javascript:showFeedPart(\'' + element + '\', ' + next + ')" class=prevNext>Next »</a>'
  338.     }
  339.     
  340.     document.getElementById(element + 'NextPreviousHead').innerHTML = nextPreviousHTML
  341.     document.getElementById(element + 'NextPreviousBottom').innerHTML = nextPreviousHTML
  342. }
  343.  
  344.  
  345. function showFeedPart(element, start){
  346.     eval('var array = ' + element)
  347.     top.start = start
  348.     top.element = element
  349.     array = array.slice(start,start + itemsOnPage)
  350.     
  351.     var response = '<ul>'
  352.     response += writeFeedHtml( array )
  353.     response += '</ul>'
  354.     
  355.     document.getElementById(element).innerHTML = response
  356.     
  357.     createNextPreviousLinks()
  358. }
  359.  
  360.  
  361. function replacer(s){
  362.     return s.replace(/&/g,'&').replace(/"|"/g,'');
  363. }
  364.  
  365.  
  366. function setSelectBox(id, feed){
  367.     var selectElement = document.getElementById(id)
  368.     for(var i=0; i<selectElement.options.length; i++){
  369.         if( eval('selectElement.options[i].value.search(' + feed + ') != -1') ){
  370.             selectElement.selectedIndex = i
  371.         }
  372.     }
  373. }
  374.  
  375.  
  376. function setAutoUpdateText(){
  377.     var text
  378.     if(enableInterval == '0'){
  379.         text = 'Enable AutoRefresh'
  380.     } else {
  381.         text = 'Disable AutoRefresh'
  382.     }
  383.     document.getElementById('autoRefreshButton').innerHTML = text
  384. }
  385.  
  386.  
  387. function setSelectBox(id){
  388.     var selectElement = document.getElementById(id)
  389.     for(var i=0; i<selectElement.options.length; i++){
  390.         if( eval('selectElement.options[i].value == "' + eval(id) + '"') ){
  391.             selectElement.selectedIndex = i
  392.             return
  393.         }
  394.     }
  395. }